package design.patterns.proxymode.dynamicProxy.service;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * 事务处理器，实现了InvocationHandler
 * 动态代理业务实现
 * @Description :
 * @author: cww
 * @DateTime: 2018-07-21 10:48
 */

public class TimHandler implements InvocationHandler {

    /**
     * 为了方便参数传递，定义一个传入参数的构造方法
     * @param o
     */
    public TimHandler(Object o){
        super();
        this.object = o;
    }

    private Object object;

    /**
     *
     * @param proxy 被代理的类
     * @param method 被代理类的方法
     * @param args 被代理类需要传入的参数
     * @return Object
     * @throws Throwable
     */
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

        //代理方法前后加上业务处理，比如对汽车行驶时间的记录
        System.out.println("=====动态代理的业务处理开始-汽车行驶计时开始=====");

        //代理方法
        //没有参数就不需要填args
        method.invoke(object);

        System.out.println("=====动态代理的业务处理结束-汽车行驶计时结束=====");
        return null;
    }
}
